import http from "wechat-http";

// 配置接口基础路径
http.baseURL = 'https://live-api.itheima.net'

// 响应拦截器
http.intercept.response = async (res) => {
  // console.log(res);
  // 任何接口响应401 进入下边
  if (res.statusCode === 401) {
    // console.log(res.config);
    // 判断401接口是否是refreshToken
    if (res.config.url.includes('/refreshToken')) {
      // 页面路径栈
      const pageStack = getCurrentPages()
      // 将左后到达的一个页面存起来
      const currentPage = pageStack[pageStack.length - 1]
      // 跳转登录页
      wx.redirectTo({
        url: `/pages/login/index?returnUrl=/${currentPage.route}`,
      })
      // 如果没有 refresh_token，也就没有必要调用刷新 token 的接口
      if (!getApp().refreshToken) return
      // 返回数据
      return res.data
    }
    const { data, code } = await http({
      url: '/refreshToken',
      method: 'POST',
      header: {
        // 这时要注意使用的是 refresh_token
        Authorization: getApp().refreshToken
      }
    })
    // 失败提示
    if (code !== 10000) return wx.utils.toast()
    // 调用存储
    getApp().setToken(data.token, data.refreshToken)

    // 将用户原本要请求的接口再请求一遍
    const result = wx.http({
      ...res.config
    })
    return result
  }
  return res.data
}
// 请求拦截器
http.intercept.request = (config) => {
  // 获取App应用实例上的token
  const token = getApp().token
  // 如果config里没有header 将header设置为{}
  config.header = config.header || {}
  // 添加 Authorization 请求头，值为 token
  if (token && !config.url.includes('/refreshToken')) config.header.Authorization = token
  return config
}
// 挂载到全局
wx.http = http

export default http